package main

import (
	"fmt"
	"time"
)

func main() {
	/*
			// 1.获取当前的时间对象
			now := time.Now()
			// fmt.Println(now)
			// 获取时间对象中的各项
			fmt.Println("年：", now.Year())
			fmt.Println("月：", now.Month(), int(now.Month()))
			fmt.Println("日：", now.Day())
			fmt.Println(now.Hour(), now.Minute(), now.Second())

			// 2.获取指定时间的对象
			t1 := time.Date(2024, time.December, 10, 12, 30, 30, 0, time.Local)
			fmt.Println(t1)
			fmt.Println(t1.Year())
			// 获取unix时间戳
			fmt.Println(t1.Unix()) // 单位是秒
			n := t1.UnixNano()
			fmt.Printf("纳秒时间戳：%d 类型%T", n, n)

			// 3.通过unix时间戳创建time对象
			t2 := time.Unix(1810000000, 0)
			fmt.Println(t2)

		// 今天是xxxx年xx月xx日 x:x:x
		// xxxx-xx-xx x:x:x
		// 4.时间对象格式化为字符串
		// Go诞生时间用于格式化时间：2006-01-02 15:04:05  MST
		now := time.Now()
		fmt_time := now.Format("今天是2006年01月02日 15:04:05 MST")
		fmt.Println(fmt_time)

		// 5.将一个时间字符串解析为时间对象
		time_str := "今天是2025年03月04日 10:35:30"
		// 第1个参数设置提取
		t4, err := time.Parse("今天是2006年01月02日 15:04:05", time_str)
		if err != nil {
			panic(err)
		}
		fmt.Println(t4)

		// 暂停程序的运行
		fmt.Println("开始")
		// 提供时间单位
		// time.Minute 分钟  time.Second 秒钟 time.Millisecond 毫秒
		time.Sleep(time.Second * 3)
		fmt.Println("结束")
		// 练习：计算1~10000000之间所有整数的和；统计出程序的耗时
	*/
	// 开始计时
	t1 := time.Now()
	// start := t1.UnixNano()  // 获取时间戳

	sum := 0
	for i := 1; i <= 100000000; i++ {
		sum += i
	}
	fmt.Println(sum)
	time.Sleep(time.Second) // 停顿1秒

	// 结束计时
	// t2 := time.Now()
	// end := t2.UnixNano()  // 获取时间戳
	// 自动计算距离t1时间对象的时差
	n := time.Since(t1)

	fmt.Println("耗时：", n)
}
